﻿namespace Zy.Shared.Getway
{
    public class RouteInterceptorMiddleware
    {
        private readonly RequestDelegate _next;

        public RouteInterceptorMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public async Task InvokeAsync(HttpContext context)
        {
            // 拦截特定路由，例如判断请求路径是否匹配某个条件
            var requestPath = context.Request.Path.Value.ToLower();
            var header=context.Request.Headers;
            var headerStr = string.Empty;
            foreach (var item in header)
            {
                headerStr += $"{item.Key}:{item.Value}\n";
            }
            if (requestPath.Contains("grpc"))  // 判断是否是需要拦截的路由
            {
                // 你可以在这里做任何处理，比如返回 403 错误，或者修改请求
              //  context.Response.StatusCode = 403;
               // await context.Response.WriteAsync("Access Denied to this route.");
              //  return;  // 直接返回，不继续调用后续的管道
            }

            // 否则，继续执行后续的请求处理
            await _next(context);
        }
    }
}
